﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain.MainModule.Entities;

namespace Application.MainModule.OrderManagement
{
    public interface IOrderManagementService
    {
        /// <summary>
        /// Add a new order.
        /// </summary>
        /// <param name="order">Order to be added</param>
        void AddOrder(Order order);

        /// <summary>
        /// Change existing order.
        /// </summary>
        /// <param name="order">Existing order to be modified.</param>
        void ChangeOrder(Order order);

        /// <summary>
        /// Find paged orders.
        /// </summary>
        /// <param name="pageIndex">page index.</param>
        /// <param name="pageCount">page count.</param>
        /// <returns>A list of orders.</returns>
        List<Order> FindPagedOrders(int pageIndex, int pageCount);

        /// <summary>
        /// Find a order by its Id.
        /// </summary>
        /// <param name="orderId">OrderId</param>
        /// <returns>A order.</returns>
        Order FindOrderById(Guid orderId);

        /// <summary>
        /// Remove an order
        /// </summary>
        /// <param name="order">Order to be removed</param>
        void RemoveOrder(Order order);

    }
}
